package com.deli.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Description1: 使用ThreadLocal解决高并发下simpleDateFormat线程不安全的问题
 * @Description2: 使用 ThreadLocal, 也是将共享变量变为独享，
 *                线程独享肯定能比方法独享在并发环境中能减少不少创建对象的开销。
 *                如果对性能要求比较高的情况下，一般推荐使用这种方法。
 * @Author: xudeli
 * @CreateDate: 2018/8/12 15:48
 **/
public class ConcurrentDateUtil {
    private static ThreadLocal<DateFormat> tl = new ThreadLocal<DateFormat>(){
        @Override
        protected DateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };

    public static String format(Date date) {
        return tl.get().format(date);
    }

    public static Date parse(String source) throws ParseException {
        return tl.get().parse(source);
    }

}
